package com.erp.auto.config;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.Exchange;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 自动化 服务交换机 队列设置
 * @Author: j.zh
 * @Date: 2024/3/12
 * @Version: 1.0
 **/
@Configuration
public class AutoMQConfig {

    /**
     * 自动化交换机
     * TopicExchange
     * 创建topic类型的交换机
     * @return
     */
    @Bean
    public Exchange sellerProductEventExchange() {
        /*
         *   String name,
         *   boolean durable,
         *   boolean autoDelete,
         *   Map<String, Object> arguments
         * */
        return new TopicExchange("auto-event-exchange", true, false);
    }

    /**
     * 初始化BOM队列-个人产品库
     * @return
     */
    @Bean
    public Queue sellerProductQueue() {
        Queue queue = new Queue("auto.seller.product.queue", true, false, false);
        return queue;
    }

//    /**
//     * 初始化BOM队列-创建商品分组
//     * @return
//     */
//    @Bean
//    public Queue createStoreGroupQueue() {
//        Queue queue = new Queue("auto.create.storeGroup.queue", true, false, false);
//        return queue;
//    }

    /**
     * 路由和交换机进行绑定 设置路由key
     * String destination, 目的地（队列名或者交换机名字）
     * DestinationType destinationType, 目的地类型（Queue、Exhcange）
     * String exchange,
     * String routingKey,
     * Map<String, Object> arguments
     */
    @Bean
    public Binding autoSellerProductBinding() {
        //添加商品到个人库
        return new Binding("auto.seller.product.queue",
                Binding.DestinationType.QUEUE,
                "auto-event-exchange",
                "auto.seller.product.insert",
                null);
    }

//    @Bean
//    public Binding autoCreateStoreGroupBinding() {
//        //添加商品到个人库
//        return new Binding("auto.create.storeGroup.queue",
//                Binding.DestinationType.QUEUE,
//                "auto-event-exchange",
//                "auto.store.group.create",
//                null);
//    }

    /**
     * 初始化BOM队列-在线商品库
     * @return
     */
    @Bean
    public Queue sellerProductStoreQueue() {
        Queue queue = new Queue("auto.seller.product.store.queue", true, false, false);
        return queue;
    }

    /**
     * 路由和交换机进行绑定 设置路由key
     */
    @Bean
    public Binding autoSellerProductStoreBinding() {
        //添加商品到在线库库
        return new Binding("auto.seller.product.store.queue",
                Binding.DestinationType.QUEUE,
                "auto-event-exchange",
                "auto.seller.product.store.insert",
                null);
    }

    /**
     * 初始化BOM队列-在线商品库
     * @return
     */
    @Bean
    public Queue aeProductSetDataQueue() {
        Queue queue = new Queue("auto.ae.product.set.data.queue", true, false, false);
        return queue;
    }

    /**
     * 路由和交换机进行绑定 设置更新路由key
     */
    @Bean
    public Binding autoAeProductSetDataBinding() {
        return new Binding("auto.ae.product.set.data.queue",
                Binding.DestinationType.QUEUE,
                "auto-event-exchange",
                "auto.ae.product.set.data",
                null);
    }

}

